package Mypackage.Lexer;


import com.intellij.psi.tree.TokenSet;
//import org.jetbrains.yaml.YAMLElementType;

public interface TestTokenTypes {
  TestElementType COMMENT = new TestElementType("COMMENT");

  TestElementType TEXT = new TestElementType("TEXT");

  TestElementType SECTION_NAME = new TestElementType("SECTION_NAME");

  TestElementType WHITESPACE = new TestElementType("WHITESPACE");
   /*
    KeyWords

    <option name="LINE_COMMENT" value="#"/>
             <option name="HEX_PREFIX" value="0x"/>
             <option name="HAS_BRACES" value="true" />
             <option name="HAS_BRACKETS" value="true" />
             <option name="HAS_PARENS" value="true" />
             <option name="HAS_STRING_ESCAPES" value="true" />
           </options>

           <keywords ignore_case="false">
    */

            TestElementType CALLER = new TestElementType("caller");
            TestElementType IF = new TestElementType("if");
            TestElementType ELSE = new TestElementType("else");
            TestElementType ELSEIF = new TestElementType("elsif");
            TestElementType CONTINUE = new TestElementType("continue");
            TestElementType DIE = new TestElementType("die");
            TestElementType DO = new TestElementType("do");
            TestElementType DUMP = new TestElementType("dump");
            TestElementType EVAL = new TestElementType("eval");
            TestElementType EXIT = new TestElementType("exit");
            TestElementType GOTO = new TestElementType("goto");
            TestElementType LAST = new TestElementType("last");
            TestElementType NEXT = new TestElementType("next");
            TestElementType REDO = new TestElementType("redo");
            TestElementType RETURN = new TestElementType("return");
            TestElementType SUB = new TestElementType("sub");
            TestElementType WANTARRAY = new TestElementType("wantarray");
            TestElementType IMPORT = new TestElementType("import");
            TestElementType LOCAL = new TestElementType("local");
            TestElementType MY = new TestElementType("my");
            TestElementType OUR = new TestElementType("our");
            TestElementType PACKAGE = new TestElementType("package");
            TestElementType USE = new TestElementType("use");
            TestElementType NO = new TestElementType("no");
            TestElementType REQUIRE = new TestElementType("require");
            TestElementType BLESS = new TestElementType("bless");
            TestElementType REF = new TestElementType("ref");
            TestElementType TIE = new TestElementType("tie");
            TestElementType TIED = new TestElementType("tied");
            TestElementType UNTIE = new TestElementType("untie");
            TestElementType UNLESS = new TestElementType("unless");
            TestElementType WHILE = new TestElementType("while");
            TestElementType UNTIL = new TestElementType("until");
            TestElementType FOREACH = new TestElementType("foreach");
            TestElementType FOR = new TestElementType("for");
            TestElementType QW = new TestElementType("qw");
            TestElementType EQ = new TestElementType("eq");
            TestElementType NE = new TestElementType("ne");
//           </keywords>
//           <keywords2>
            TestElementType SHIFT = new TestElementType("shift");
            TestElementType SPLIT = new TestElementType("split");
            TestElementType CHOMP = new TestElementType("chomp");
            TestElementType JOIN = new TestElementType("join");
            TestElementType PRINT = new TestElementType("print");
            TestElementType KEYS = new TestElementType("keys");
            TestElementType CHMOD= new TestElementType("chmod");
            TestElementType WARN = new TestElementType("warn");
            TestElementType OPEN = new TestElementType("open");
            TestElementType CLOSE = new TestElementType("close");
            TestElementType EXIST = new TestElementType("exists");
            TestElementType LENGTH = new TestElementType("length");
            TestElementType PUSH = new TestElementType("push");
            TestElementType SEEK = new TestElementType("seek");
            TestElementType TRUNCATE = new TestElementType("truncate");
            TestElementType GREP = new TestElementType("grep");
            TestElementType BLABLABLA = new TestElementType("blablabla");
    
    
    //operators:
    TestElementType DOUBLE_QUOTE = new TestElementType("double quote");
        TestElementType SINGLE_QUOTE = new TestElementType("single quote");
        TestElementType BACKTRICK = new TestElementType("backtrick");
        TestElementType LBRACE = new TestElementType("{");
        TestElementType RBRACE = new TestElementType("}");
        TestElementType LPAREN = new TestElementType("(");
        TestElementType RPAREN = new TestElementType(")");
       

       TestElementType PLUS = new TestElementType("plus"); //+
       TestElementType UNARY_PLUS = new TestElementType("unary plus"); //+
       TestElementType MINUS = new TestElementType("minus"); //-
       TestElementType NEGATE = new TestElementType("negate"); //-
       TestElementType INCREMENT = new TestElementType("increment"); //++
       TestElementType DECREMENT = new TestElementType("decrement"); //--
       TestElementType ASGN = new TestElementType("assign"); //=
       TestElementType NOT = new TestElementType("not"); //!
       TestElementType QUEST = new TestElementType("ternary"); //?
       TestElementType COMMA = new TestElementType("comma"); //,
       TestElementType CONCAT = new TestElementType("dot"); //.
       TestElementType COLON = new TestElementType("colon"); //:
       TestElementType SEMICOLON = new TestElementType("semicolon"); //;
       TestElementType BIT_AND = new TestElementType("bit and"); //&
       TestElementType BIT_OR = new TestElementType("bit or"); //|
       TestElementType BIT_XOR = new TestElementType("bit xor"); //^
       TestElementType BIT_NOT = new TestElementType("bit not"); //~
       TestElementType LIT_AND = new TestElementType("literal and"); //and
       TestElementType LIT_OR = new TestElementType("literal or"); //or
       TestElementType LIT_XOR = new TestElementType("literal xor"); //xor
       TestElementType EQUAL = new TestElementType("equals"); //==
       TestElementType NOT_EQUAL = new TestElementType("not equals"); //!=
       TestElementType IDENTICAL = new TestElementType("identical"); //===
       TestElementType NOT_IDENTICAL = new TestElementType("not identical"); //!==
       TestElementType PLUS_ASGN = new TestElementType("plus assign"); //+=
       TestElementType MINUS_ASGN = new TestElementType("minus assign"); //-=
       TestElementType MUL_ASGN = new TestElementType("multiply assign"); //*=
       TestElementType DIV_ASGN = new TestElementType("division assign"); ///=
       TestElementType REM_ASGN = new TestElementType("division remainder assign"); //%=
       TestElementType SHIFT_RIGHT = new TestElementType("shift right"); //>>
       TestElementType SHIFT_RIGHT_ASGN = new TestElementType("shift right assign"); //>>=
       TestElementType SHIFT_LEFT = new TestElementType("shift left"); //<<
       TestElementType SHIFT_LEFT_ASGN = new TestElementType("shift left assign"); //<<=
       TestElementType AND_ASGN = new TestElementType("and assign"); //&&=
       TestElementType OR_ASGN = new TestElementType("or assign"); //||=
       TestElementType BIT_AND_ASGN = new TestElementType("bit and assign"); //&=
       TestElementType BIT_OR_ASGN = new TestElementType("bit or assign"); //|=
       TestElementType BIT_XOR_ASGN = new TestElementType("bit xor assign"); //^=
       TestElementType AND = new TestElementType("and"); //&&
       TestElementType OR = new TestElementType("or"); //||
       TestElementType LESS = new TestElementType("less than"); //<
       TestElementType LESS_OR_EQUAL = new TestElementType("less than or equal"); //<=
       TestElementType GREATER = new TestElementType("greater than"); //>
       TestElementType GREATER_OR_EQUAL = new TestElementType("greater than or equal"); //>=
       TestElementType CONCAT_ASGN = new TestElementType("concatenation assign"); //.=
       TestElementType SILENCE = new TestElementType("error silence"); //@
       TestElementType DIV = new TestElementType("division"); ///
       TestElementType MUL = new TestElementType("multiply"); //*
       TestElementType REM = new TestElementType("remainder"); //%
       TestElementType HASH_ARRAY = new TestElementType("hash"); //=>
    
       TestElementType VARIABLE_NAME = new TestElementType("variable name");
       TestElementType VARIABLE = new TestElementType("variable");
       TestElementType HTML = new TestElementType("html");

  TokenSet KEYWORDS = TokenSet.create(DO,  AND, OR,
           IF, ELSEIF, ELSE,
            WHILE, FOR,  RETURN,
            CONTINUE, LOCAL,
            UNTIL);
    //toDo: where TokenSet "KEYWORDS" is used?//


  TestElementType KEY_CHARACTERS = new TestElementType("KEY_CHARACTERS");
  TestElementType KEY_VALUE_SEPARATOR = new TestElementType("KEY_VALUE_SEPARATOR");
  TestElementType VALUE_CHARACTERS = new TestElementType("VALUE_CHARACTERS");

  TestElementType LBRACKET = new TestElementType("[");
  TestElementType RBRACKET = new TestElementType("]");



    
  TestElementType ERROR = new TestElementType("ERROR");
}
